package com.groupseven.happycampus.common.instener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.groupseven.happycampus.common.bo.BookBo;
import com.groupseven.happycampus.common.pojo.Book;
import com.groupseven.happycampus.service.BookService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * @desc： excel 文件上传监听器
 * excel 读取数据时的监听器
 */
@Component
@Scope("prototype")     // 注意 这里要设置成多例模式
public class WebBookListener extends AnalysisEventListener<BookBo> {
   //创建list 集合的目的是为了 进行批量数据添加  提高效率
    List<Book> list = new ArrayList<>();

    @Autowired
    private BookService bookService;

    //excel  每读取一条数据 所要执行的方法
    @Override
    public void invoke(BookBo data, AnalysisContext context) {

        Book book = new Book();
        //属性拷贝
        BeanUtils.copyProperties(data,book);
        list.add(book);

    }

    //excel 中全部数据读取完毕
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("要进行批量插入数据的条数为："+list.size());
        if (!list.isEmpty()){
            //数据库中批量添加数据
            int count = bookService.addBooks(list);
            System.out.println("向数据库中成功插入了"+count+"条数据！");
        }
    }
}
